package com.jy.modules.cims.component.sysAssist;

import java.util.Date;
import java.util.List;

import com.jy.modules.cims.common.CimsConstant;
import com.jy.modules.cims.common.sysUtils.SearchParamUtil;
import com.jy.modules.cims.data.common.dto.TCMmDueexecutetaskcfgDTO;
import com.jy.modules.cims.data.dto.DueExecuteTaskCfgDto;

public abstract class AbstractDueExecuteTaskManager {
	/**
     * 注册到期执行任务
     * @param taskInstance
     * @param taskMethod
     * @param dueDate
     * @param objects
     * @return 
     * @return String
     * @author chenguixue
     * @date 2015-3-17-下午7:29:57
     * @update
     */
    public abstract String addDueExecuteTask(final String taskMethod, final Date dueDate, final Object...objects );
    
    /**
     * 根据标识执行到期执行任务
     * @param taskId 
     * @return void
     * @author chenguixue
     * @date 2015-3-19-下午4:15:30
     * @update
     */
    public abstract void runDueExecuteTask(String taskId);
    
    /**
     * 
     * @return 
     * @return List<String>
     * @author chenguixue
     * @date 2015-3-24-上午11:39:13
     * @update
     */
    protected abstract List<DueExecuteTaskCfgDto> getNeedDueExecuteTaskList();
    
    /**
     * 运行所有符合条件的到期执行任务
     *  
     * @return void
     * @author chenguixue
     * @date 2015-3-24-上午11:17:14
     * @update
     */
    public void runAll() {
		List<DueExecuteTaskCfgDto> list = getNeedDueExecuteTaskList();
		if(list != null && list.size() > 0) {
			for(DueExecuteTaskCfgDto cfgDto : list) {
				runDueExecuteTask(cfgDto.getTaskid());
			}
		}
		
    }
}
